from __future__ import annotations
from abc import ABC, abstractmethod
from typing import Generic, TypeVar

T = TypeVar('T')

class BaseItem(ABC, Generic[T]):
    def __init__(self, item_name: str, item_tags: frozenset[str] = frozenset(), item_categorys: frozenset[str] = frozenset()) -> None:
        self.name = item_name
        self.tags = item_tags
        self.categorys = item_categorys

class BaseDataAdapter(ABC, Generic[BaseItem]):
    pass


class BaseAnalyzer(ABC):
    @abstractmethod
    def process(self, data: BaseDataAdapter) -> BaseDataAdapter:
        pass